{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from sklearn.datasets import make_moons\n",
    "\n",
    "import bayesnet as bn\n",
    "\n",
    "\n",
    "np.random.seed(1234)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAD8CAYAAAB3lxGOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXmYTtUfwD/nvvvsixlk3/d9iyiRiIiSJJIlW6VCUgpJ\n1gghS2QXEpUoIvuWJfu+72bf593u+f1xx8uYGQ3G9pv7eR6Ped97zrnnve97v/ec7yqklOjo6GRf\nlIc9AR0dnYeLLgR0dLI5uhDQ0cnm6EJARyebowsBHZ1sji4EdHSyOfcsBIQQViHEDiHEXiHEQSHE\nF1kxMR0dnQeDuFc/ASGEALyllPFCCBOwCXhfSrktKyaoo6NzfzHe6wBSkyLxKS9NKf90DyQdnceE\nexYCAEIIA7ALKApMlFJuT6dNF6ALgLe3d5WSJUtmxal1dHTSYdeuXeFSypDMtL3n7UCqwYQIAJYC\n70kpD2TUrmrVqnLnzp1Zdl4dHZ3UCCF2SSmrZqZtlloHpJTRwN9Ao6wcV0dH5/6RFdaBkJQVAEII\nG9AAOHKv4+ro6DwYskInkBuYlaIXUIBFUsrlWTCujo7OAyArrAP7gEpZMBcdHZ2HgO4xqKOTzdGF\ngI5ONkcXAjo62RxdCOjoZHN0IaCjk83RhYCOTjZHFwI6OtkcXQjo6GRzdCGgo5PN0YWAjk42RxcC\nOjrZHF0I6Ohkc3QhoKOTzdGFgI5ONkcXAjo62RxdCOjoZHN0IaCjk83RhYCOTjZHFwI6OtkcXQjo\n6GRzdCGgo5PN0YWAjk42RxcCOjrZHF0I6Ohkc3QhoKOTzdGFgI5ONkcXAjo62RxdCOjoZHN0IaCj\nk83RhYCOTjZHFwI6OtkcXQjo6GRzdCGgo5PN0YWAjk42RxcCOjrZnHsWAkKIfEKIv4UQh4QQB4UQ\n72fFxHR0dB4MxiwYwwX0llLuFkL4AruEEKullIeyYGwdHZ37zD2vBKSUl6WUu1P+jgMOA3nudVwd\nHZ0HQ5bqBIQQBYFKwPZ0jnURQuwUQuwMCwvLytPq6OjcA1kmBIQQPsAS4AMpZeytx6WUU6WUVaWU\nVUNCQrLqtDo6OvdIlggBIYQJTQDMk1L+nBVj6ujoPBiywjoggOnAYSnlmHufko6OzoMkK1YCTwHt\ngHpCiH9T/jXOgnF1dHQeAPdsIpRSbgJEFsxFR0fnIaB7DOroZHN0IaCjk83RhYCOTjZHFwI6Otkc\nXQjo6GRzdCGgo5PN0YWAjk42RxcCOjrZHF0I6Ohkc3QhoKOTzdGFgI5ONkcXAjo62RxdCOjoZHN0\nIaCjk83RhYCOTjZHFwI6OtkcXQg8ZKKuRjN/6M/sWLnnYU9FJ5uSFcVHdO6B/i8O49TeMxjNRsas\nH0zxKkUe9pR0shn6SuAhExcZj9ulIoQgPirhYU8nFUnxSSwc9QurZ69HSvmwp6Nzn9BXAg+Zzxf1\nYvon8yldqziV6pd72NNJxbju01i/eCsGo4LBqFCvTZ2HPSWd+4AuBB4yxasUYcSqz++6/9WzYfz7\n9wGqPF+BHE8EZeHMIDYyHtXlRlEE8dGJWTq2zqODLgQeMnFR8bhdbgJC/O+on8PuZPnkVczovwAA\nm4+VHy9MwWA0cHTnSf7+cTNPv1KD0jVL3PXcPvjubSZ98ANBuQNp1KneXY+j82gjHsZer2rVqnLn\nzp0P/LyPGge3HKVvg8FIVaXfnJ483bJmpvuOf/d7/pixFmeyEwCDUWFp5EwMRgOvhHQkOcGOxWZm\n4eVpePt53a+PoPOIIoTYJaWsmpm2umLwIbLllx04khw47S5WzVp3R33Dz0fgsrsQisA3yIduY9pj\n87Hhdqu4XSoAqqridrnvw8x1/p/QtwMPkWdb1+a371bhcrp46Z1GGbaLuBzFwOYjSYpPYsDi3hQo\nnY8e4zpgT3bgn8OPD6d0weZjA8DmbWXgkj4sn7yKhh2exS/I90F9HJ3HFH078JBxOpyobhWLzZLm\nWHx0AssmrOTojhPsWLkH1a3yVIvqDFry0UOY6Z2xf+Nhpn08h7K1S/H2iLZoJSt1HhR3sh3QVwIP\nGZPZlOGxrztOZPvvu0GAYhCAwoFNR9i77iAV6pZ5cJO8C4a0HkPk5WhO7z9H9RcqUfHZsg97SjoZ\noOsEHmHioxNxu1UMBgM1mlTBYDQQExbL150mPeyp/SfBuQMxmY1IVRIQemeWD50Hi74SeITpM6MH\nU/rMJlehUOq+Voudf/yLxctMvuJP3PPYEZej+LzpcOKjExjwU2+KVix0x2O4nC7+mrsRm7eFp1+t\nmWrJP+yPz1gzdyPFqhSmYJl89zxfnfuHLgTuE1t/28nK79fQpMtz1GhS5a7GyFUwlIE/9fG8/vrv\nQfz0zXKS45M5te8seYrlon+TYZzef5b3JnambqungJSbc84GvP29qP1yjXT34yum/cXJvWdQ3So/\nfLaAr5Z/esfzm9F/Ab9O/AOEIDEuiRc61fcc88/hx8sfNLmLT63zoNGFwG04e+g8P3z+I8WrFOb1\nT17OtHIrISaBL1uNxml3sXPVvyy+Oh1vPy+ung1jTJfvuHTiKm0HtKRh+2fvaD72JAfbl+8iOcHO\n2UMX6Pr1mxz95wTJCXYm95rtEQLT+s7h96l/gRDYkxzkKhjCvg2Hqf9GHXIWCAGgaKVCmMxGhCIo\nWaNYqvN8+950fp+6mlovVePzhb0y/NzXzoXhtDtRDAphFyLu6LPoPDroQuA2DH51NOcOX2TXqr0U\nq1KEag0rZqqfYlBQFCXlbwOKQfu7b4PBXDpxBYAxb0/m6ZY1sXlbMz0fq7cVqUqEIrB6WylYNn/K\n+xbK1CrO2h83seSb5bjsLhzJTgxGA6f3n+ObrlNwO1z8PnU18858B0DNplX5+u9BJMYmUal+OWLC\nYxnXfRoSyealO5CqZNtvu7hy+hq5C+dMdz5dRrYjLjIem6+Nl9/Xn/qPK7oQuA1WbyuKQUFKic1b\nM+H9PP53Dmw8zBuftaRIhYLp9rP52Bi1dhDrF2+lbquahF+MZNaAH7l2LvzG2DYLJvOdXf4SVYvQ\nb25Pjv5zgqbdGxKaLwfT9o/h0okrlKxRjJdzdMDtdGM0GyhVszhBuQJ4qnk1lk1YidutEhcVn2q8\nktVvrABmfv4jW37ZgSolvoE+OJId+AX7EpwniH0bDpGcYKdao4qpVgWh+UMYsWrAHX0GnUcPXQjc\nhsG/fMwvE1ZSpGIhytYuxcEtR5nx6XzsiQ6O/nPS81RNj1I1ilGqRjH2rj/IB3U+x+3UPPdsPlYq\nP1eOrl+3x2hKffkPbD7CiT2nqfd6bfyC03fyqd2iBrVb1PC8zlUwlFwFQ3G73Hj52kiKS8JoMjH0\n90/w9vcGoMOXrdny6z+0/fxVXE4Xq2atx8vXyjOtanlu6oCc/ihGA267k9iIOOq9Xpvu37RnzdwN\nTHx/BghBm09a0ObTVzznTopPwmw1YzAa7u4C6zwSZIkQEELMAF4Erkkp/28MwsG5A+n4VRvPa7PV\nBBIURWDxSuvcczNSSn4a8xvLp6z2CAAhBOXqlGLQz33TtD9z8Dz9nv8SVZX8NWc9E7YPJy4qno8b\nDObq2XD6zXmPao0qAeB2uTm++xQj2k8gOcHO4GV9KVa5MOO2DGFg85FcOnGVUR0ncXzXKcrWLknf\nWe/SsldTACb3nsnyyatBCBJik9i77iBHdxyn+zdv0eTt51g+ZRUuh5t1izaz5bd/cCQ6UFXNoezv\nHzdToHQ+LN5mdq3ax9Jxv+OXw4/Ju0cSlCswS665zoMnSzwGhRBPA/HA7MwIgcfZY3Djz9s5vO0Y\nzXo0JFfB0AzbHdp2jL7PDcaeaEcoAiEEVRqUp/+PH6YK6HHYnfw1ez0Rl6NYOHIZ9kQH3v5e/HRt\nOqtmrmPi+zNwJDvxCfRm3pnvMJoMdKvcl/NHLnrG8M/hR9k6Jdm/8TCJsYm4HDfiBYxmA0NX9KdS\nPS1XweBWo9n883YUg4FnWtVk45JtOJKd+AZ5M/vERFrn64o9wQ4CSOenYbaZcSQ5PK8tXhbe/+5t\nGrR75h6uqk5W88ADiKSUG4DIrBjrUafOyzXoMrLdbQUAaMt+KaVHAKhulb3rDhJ+MfVl+rzpMMb1\nmMaC4UvJVzIPQhE4kp1M7j2LYlUKewKAEmISmf/VEs4fvcS1c2GpxnA6nOxatZfY8DjcThWLl9lz\nzOVwExDiB8Bvk/8k+moMRSoVotZLVan7Wi0cKVGIcZEJXDlzjZa9XtSW9+kIAKGIVAIAwGQxUuGZ\n0pm7eDqPJA/MY1AI0UUIsVMIsTMsLOy/OzwGuJwuLp+6iqqqaY4VKpufQUv68Eb/V/Dy04J7HMlO\nNize6mkTdiGCPWsOoLpVnMlOcuQJxmA04LQ7WT5lNTMH/Mjzbz2L0WzAaDJg9bGSv1Qe8hTLDQJC\n8+egcIUCdB7+BskJdgAKly/Al799gs3HimJUsPlayVP8CS4cu8Tk3rPZv/Ew5w9f5LOFvchXMk+q\nOZ89dIEiFQshlNQmQYNRwWgy8N7EzjxRNBdWHytCEbQd0JL55yYTmj8kqy+tzgPkgSkGpZRTgamg\nbQce1HnvFw67k26VPuLK6auUf7o0w/9Mmx2oWqNKVGtUCYPJwJwvFqO6VVbNWke7Aa8CoLpVDEYF\nl9ONwaDQc1Jnxnefxj9/7MHtdLNv/SE+XfABeYrlwmAw8NK7jXAkORj080f4BHjjG+gDwIzP5nvO\nGZDTn0rPlmXCjuH8s3IPNV6sgtliwmwzI9Ce5lZfzSyZp2huWrzfhOWTV1GwTD6eal6d3X/tw2A0\n4HK4MJqN1GxWlZLVi1H6yWKUrV2Kpl2fBzSdhx4U9H+ClDJL/gEFgQOZaVulShX5uHNs10nZ0Pya\nfE60lM+JltLpcGbY9uKJy7KpXzvZ2KuNnPLRLCmllKqqyg/qfCYbmV+TLwW8KQ9sOeJp/0mjIfJF\n37byRd+28sqZa573Tx84K5v5t5MvWF+X8776yfP+7jX7ZGOvNrKxVxu5fOqqDOexd/1BOXPgj/L8\nsUsZtlFVVf48/nc5tvsUee18eLrHT+0/KyOvRGU4hs7DB9gpM3nvZlkosRCiILBc/p8rBq/zZasx\nbFyyDSklFeqW4eu1g27bPvJKFBGXoihaqRBCCJIT7TTzbYuUYLKYmLZ/NHmK5ga0Vcbevw+Qr2Qe\nj+5hxmcLWDD0Z4/CLm+JJ/jh8DjP+NfOhWFPcpCvRJ70Tn9HuN2aHsKR5ODyqWsUKJMXg0EzA87o\nP5+fx/6OUAQTtg+jQGk9LuBR5IGHEgshFgB1gRxCiAvAQCnl9KwY+1El/GIEUkrMVhP137h9Ft4L\nxy/zXo1PSE5I5qNZ71KvdW2sXhbqtanDmnkbKVu7ZCqvPLPF5DEHXmfZ+BWevxWDQquPmqU6npl9\n+f6Nh9m/MbX78K0c2naMjxsMRqoSo8WEy+6kYNn8vD2iLUUqFuDvHzdjT3Jgtpk5uPmoLgT+D9CT\nitwlZw+dZ2z3aeQuFMoHU7pitmScF2DWwIXM/fInAAqWyce0/WM8x5wOJyazCSklbpebfo2GsH/D\nYVr3a06HL1/3tBv51gTWL9qCl58Xk/eMJDj37TMLXzh2iYEtRmEwKnz5az+klHQu8yEuh4vgPEEe\nR6cLxy9zcNMRDu84TpUGFdjyyw7+mrMh3THNNhNul4rqUslZMITxW4cSeFOY8M5Ve/l37X4adaxH\n3iyIdNS5e/Qcgw+AAqXz0fv77vjl8GX36n23bRsTEef5OzE+KZX7rmJQ+Pj5wTQ0vsawtuM4sv0E\nqltl4YhfUo3x0Q/vMOyP/rzQuR6n9p3L8FwJsYn88cPffPfhTM4ducDZg+dZPPpXEmOTAHC7VU+R\nk+O7T9GtUh++7jSJ36esZni78ZSsXgyDMf2fhSPJidvpRkrJiFWfpxIAJ/49zWcvDmPhyF/o/eyg\n214PnUcLXQjcA32f+4Il3yxnyGtjOJfivONyugi/FOmp2BMbEceBTUc8fSIvRdGlfG+cDs0+f+7w\nRQ5sPoqUkg2Lt2HzsWLxslD+Ftu7EIIxnSfz47BlDGw+krOHzgNaMtGbV3OfvTiMCe9+z67VezFb\nTJisJopXLULh8gVoP/g1yj9TmkFLtfRkJ/ac5uaFoNvlxpHkYPT6wQTlDsTmY+Xl95sghEAIbSVw\nnV+/+zNVv2Ftx3t8GhJj9RoFjxPZKnYg4nIUK6evoVjlwtRoXPmex3MkOz1ONU67k6SEZLpV7MO1\nc+E806oW/eb0ZPmUVZw7fMHTx+V0Ex0WS0x4HF6+NnIVCiUgxI+Y8FiKVSpMv3k9ibwclW5Nwqvn\nwpFS4rQ7OfHvGaKuxvDZi8OweJn5ZuMQ8pfMw6UTV7AnObB4mWk74FXK1CxBuTqlAHi1dzNe7d1M\niyYcsoSm3RtSqFx+Lh67hGI0EBcVz6xBi/h03vssvDjVc94mXRvgdrrYt+EwE9+fgVQlx3ed8hwf\n0X4C5w9rQlAogtYft7jna3sr25bvYkjrMQTmDGDspiEE59bdlLOKbCUE+jceyumD5zCZjHyz8UuK\nVS6c6b5SSk7sOY1/iB+h+XIA8NXyT/hxxFJC84fwXa+ZFK1UiMgr0bicbtYt2kK/OT3JW/wJjCYD\nJrORAqXzcv7oJco9XZp2Rd7BZXdRvGoRpu79mmM7TzK41RjaFuyBYlB4rm0dOg59I9WP3SfAi+hr\nsRhMBrx8bSwa9Qv2JAf2ZDsbFv1BmdrVKVyhACaLiUr1y/Fq76Yerf51rpy5xsT3f8Bpd3Jo6zF+\ni5+DwWCg1zMD2L/pMEhJbGTqaMP8KU5FVm8rk3spuFQ3+zce5vT+c+QpnpuDm494vCOrNapE60+a\n3+1XlCGzBy3Enugg4lIkGxZvpUXPxll+jvRQk5aDfQ3C6y2EucIDOeeDJlsJgbjoBFSXirAIEmIy\nt2SNCY/l37UH2L/pMH/MWAsIxm78kqKVClGiWlEGLO5DU9+22BMdHNp6jBxPBHH1bBhVGlRg/tCf\nea7d0wz+pR8J0QnUal4Ng8HA2+V64bK7ADi59wwRl6OJvBLj2bdrTkXrOX/0MuO3fOWZyydz3+fb\nd7+neNUiVGtUkZiwWPauO8DA6ScoWWU0r1csgyNZ8+/vMa5DGgEAmq+/YhAoisDmY/HkPeg9vTuT\nPpiJyWIEJA67M42yMzB3ACaLCVdKQFT3Kn3JkTeIjkNfZ2zXKUgpKF2zeLrnvVeebFrVs+UqW7tk\nlo+fHtJ1FmI+AexI+wZEzl0P5LwPmmwlBAb+1Jsf+i+g9FMlMszWK6XkyplrBIT4YfGy0LXSR8SE\nxXoUYiariUNbj1G0kpaTTwiBt58XjiQnqJKPZ7+HwajQ59lB7PrzX1bN/JuZx771jB8THku+Unk4\nc+g8SAjJG0zuwqHYfKyYrSaP+y+APcmeam6VnyvPD0fGe1436liPinXzEWJrSmIcSKkCClKVfPnq\naFxOFx/98C4heYM9fQJD/Rn510B2r95H3dduhBLnKZqblr1e5PNmw9n557/8u/YA/eb0THX+c4cu\n4HRowkuqErfqJuxcBDmeCMJpd+N2uZk3ZAkN3nzGs1rKKt4c2IraLWrgF+xDjjzB/90hS7hZZfb/\nGy6drRSDxasUYdgfn9Hu81czdHmd1ncOnUp/yBsFunP51FUiLkXicrg0AWAxkjN/Duq8UiNVn7Gb\nhlCgdF6EIujXcIgWJCRISeRxo9x41LUY3irRk39W7qFE1aKM/GsgPxwZh8lsIiRvMB/98A4mqwmD\nyUCe4rn5fFHv//xMOQsVRZgr4e1nYPBcSf22dShRvQj/pNzI3/ebl6ZP6SeL0/bzlmnMeJdPXUNK\nsCc6OH/0kuf9BcOX0rViH07+ewbjLZYDKSUIgU+AFyaLCaPZiHdKrERGXPdUu1MKly/wAAUACGM+\nRMB4sL2OCJqd6ph0/ItM+h0pHRn0fnzIVkIgM6xdsAmn3YnT4WLFtL88EXiKQeHd8Z344ch4AnMG\npOqTu3BO4iLjUyLyJFJC289bUvHZsgz6+UahkHOHLuByuFJyBJ6nUr2yqRKLXDx+BdWl4na6uXjs\nMssnr0p3jtd9CkBbiYigeYiQ1VR5eTHN332BI9uPgwQpwWIzZXjDud1uDm8/TtS1GADqtalNtUYV\nKVKhIB9M7gLApZNXmDt4Maf2nWVc92l8f2isx7HJYDTg7e/FlVNXiY9OQAio1awqaxdsTjeoCjSz\nZPOA9jT1bcuhrUcz/B7WL95CpzIfMP3TeXclMLIKYX0W4TcIAOnWMkNJxz/IyDeRMZ8iY/o/tLll\nFboQQDPrXbfdt+z1IopBwWwzs2zCHyTGJpG7UCjNejSkQfuMY+YrPFsaBFh9rJSpVZzWH7dg1JqB\nHs08QOlaxSlRrShmm5n2X7RKM8YLneuRt3huzyplxbS/0rRJiEmgQ8meNLK05qdvfkt5VyCTliGj\nOoNrfyrBsnL6Wpr6tmPfhkNpxhr2xnj6PvcFHYr3JOxCBFYvC4OWfMTkPaPIVSgUVVXxCfBOMREK\npJSM6zGNl99vzPKEuQxd2Z8Zh8eyYvpa3C4Vh93J3z9uZkqfWRk6HP005lcS45KwJzr48rUx6bYB\nGPHmBM4dvsjScSs4vT9jv4gHgYz7GhnRChleH+k6Aa4zKUeSwHXsYU4tS8j2QiDichSt83bl1Vyd\nWThyGS17NeO3uDm06tMM1a39sPOVyss74zpmWC0oOiyG9Yu2goToqzF80ugr3C43CbfYy01mE1+v\nHcTvCfNo2atZmnECQvw181eeIIxmY7ruyNuW79KSlUotLyAAzp0QPwUcmyle9Bte/6QFN+927Il2\nFo/+Nc1Ye9bsJznBjtvt5tTeM573x3SZTMvQTrxdrhcWLzMN2tcFoSks/1mxh+mfzOfI9hNUrl+O\nwJwBNHyrLkazURMUqkSqMpVu49r5cDb8tJWEmAQKlM7veT8mLI6MCMkXjNlmQiiCgFC/DNs9EOx/\nAcna0sqxB6xNwFwTDEUQfl883LllAdleCOxZsx97oh230+1xgDFbzbzY7XlqNK5E2adK0mPsW+n2\nXTt/I5M+/IE1czd4MgqD5rL7ev5uvJKjQ7o33+3wCfBm9olvmXNqIvXbPs2XrUbz98LNNxoI4XHw\nuV59GOGH5rCggBpB6y6z6L+gE7mL5MRgNGC2mniqefU052r/RSvMVhOFyuanwk1lwlbNWofqVrl2\nLpyT/56hSoPymG6yFKhSxWC6oShr3Pk5ilcpnJLCHHIVCmXptyvY8us/xEXF06V8b0Z1mMh7NfvT\nsndTilUpjMGo0G7gqxleh7GbhvDO2I58u23Yw09d5tMTMIEhJ1jrIxQvlKApKCErEebMZaB+lMn2\nsQPhFyPoWvEjEmMTaTfwVZ5pVYuJPWeQs2AoPca+le7TP+pqNAuGL2X5lNU4k50IITCajQSE+uF2\nuqnZrBpr5m4gOdFOaP4ct01ImhGqqvKS/5skJ9gxW03MODyOnAVCiI2Mo3PZXsRFxPFCp/r0nPQ2\nANK+ERn7JbjPAAbw7oHi+x7XzofjtDs9EYqZYXi78axfvJWQvEFM2Tsam7eVoW+MZf3CLaiqpGyd\nUnyzfnCqPq+EdCA2Il7Lw4jmSOXt78XYTUN4t3o/7EkOFIPCSvsCFEXB6XCybfluchcOvavqRzq3\nRy9IegfkyBPMgvOTSYhNIjDUn951B7Jv4yHMVjPFKhemcef6afr0rjuQS6euehKISilxO91UfLYs\nfWe+S9iFCDb8tBWnw0XeEk9w7Xz4HZvMhBCpsvheX2n4Bfky9/QkYsJiyZHnRhCRsNRB2ppDwhSQ\nEmHSnux3Y6r7ePZ7dB7+BgGh/h79QsGy+fl7gbYiuXzySpo+703szJTesylcPj971x/GYjOTq1Ao\nBUrnpUH7umz55R9e/7SFxy9h1FsT2frbTqQqGb1+MCWqpvWQ1HkwZHshANry32zV8vIFhPphMmn7\nW/8c6af9jrgchdvpxmAyUPapkkgpMZoMdPxKi/oLyRtM31nvMLD5SP5de4AP63x+x6sBIQSj133B\nyulrqdGkMiF5g5HSjRAGzBZTKtu/p493dzBVBsXHIwTuBiFEGlNc9UaVmPPFIlwONxGXolBVFUVR\nmP7pPH6d9Ce1XqrG/HOTEUJwat9Zjv5zwlMC7f1Jb/P+9RWLlFw9G8bxPadJTrBj8TJz7vAFXQg8\nRLL9duBWkuKT+H3qX4TkDebpV2sSGxHHyu/XkL90Xmo1qwbAP3/s4YfPFlDthUq8Nbh1Gp+DMwfP\n8W6NT7AnajZks9XM74mavT7qWgz71h2k3NOl7mive3T9hxzeso06LUoQVGIGQqSvzpH3Ke2X2+3m\ni1e+ZteqvbzapxlvDW5NXFQ8Lwd38LSZum80hcrmv80o8GWr0Wz9bSc+Ad6YrWYKlM7L54t7Y/2P\nFO46d8adbAeyvRDYsXIP0z6eS8Vny9BjbAfPDXT51FUS45KY8O50Dm8/jhBQonpR3pvQOU3loeRE\nO2O7TtEsDR83Z0DzkZ6svEIIek3rSqOO9XE5XbQp0J2kuCQsXhbmn5t82zwE17l67iKdSvVEVSFn\nXiczDn+LMBZI1Ua6LyHDW4GMQQR+i7DUzZLrcytul5sl3ywnLiqBhh3q0qHE+55jC85P/k9nnkbm\n1rhdbqzeFkb+NZBSt9RBfBhI12lk7BAw5Ef4fYoQ//2dPOroOoE7YHi78cRFxnPl9FWeblmTcnVK\nsW/DIT594SsQWurw6445BzcfZdDLo5hzcmKqMVZ+v4YNS7bhtDuJi4xHScnWa7IY6TOjB/Ve10x9\nCbGJxITHorpUXA4XCTGJmG+Kyc+I6GvJgILTDuFXzGBIreST0omM+RLkNe113PhMC4ETe07z19z1\n1GxWjQrPpO9KfTPLp6xm1qBFqG6VqKvRdBvzJkvHr+T5t+py8cQVpvadS/02tTOsxPxC5/r8PnU1\nTxTJRZEKBdJtcz/QHnbJCJHWm1HG9APnHsAK5vJgy/ooyEeZbG8iDM2XA6PZgD3RTr+GQ1gwfCn7\nNx7G6XARWkkkAAAgAElEQVRhT3QQmj+EUk8WQzEqmjNQOgVEg3IHoigKZouZIhUKUqNxZUILhPDZ\nwl4eAQAwvd88BJrjTbN3GqVKynE7ilcpTIv3m1G4fC4+nd8HIW7UFZBqHDKsATjW3OhgyItUE1Ej\n2qFeq4mavCadUbWneq+6A1jyze982ngoMeGx/zkXl1NzoZaqFtJcrVFlYsPj+HHYUvo2GMzfCzbx\nRcvRHN5+jIjLUdocpWRUh4m8nKMDLoeL9yZ0Yvy2oR49zP1GymRkRFPk1YqosUPTNlCCABMgQASk\nPf5/TrZfCRjNBmSKi60j2cHsgQuZeexbVk5fQ3xUAl1GtqNC3TJsXraDo/+c4MVuz6cZ4+mWT6IY\nFPauO4g9MZmWvZumKvZ5nc2//KMthX2sVHw284o7IQSdhraj09B2aQ86D4CMvukNK8L3A7CvBec+\nIAnivkLiRDoPI7zeQBi05KWqqnoiAqWUnr9vR9PuDYm8Ek18VAKdhrZh7YJNuJxunHaXZyvldrno\nXXcQikEwas0grN4W1i/agj3JwR8z1rJ2/kaO7jxJn+97IKXkyI4TBOUKyDDv4T3jPADuC4CExJmo\nzn2IwMkIRbvhhf8oSFoIhjwIa/rl4qXrLMgEhCnjQivSHQ7uc2CqgBCPT8BRthYCUkqO7TqFTKm1\nZ7aaKFGtKDkLhDD31KRUbZ9qXj1dhxvQioicP3KRFdNW47S7WLdwC8uiZqUp1Pla35f4vt88QvIG\np8kclN7ccGwDYQRT1YyVfaZyoASDOxmsTRB+/RFKEFKm3NDCCwwFkNF9ASfSvgmRY4nW1WxiyG+f\n8MuEldRrUydTiTrMFhNvD2/reV2zaVXmDv6JeLdK637NCb8QwZr5WvyFEIK9fx/gxW7PY7aatCIr\nTq1s+uWTVwGY+tFsfpu8GoDR6wZxcs8ZABp2eDbrCp0aS2oOVTIJkODcD0lLwVtTagrFB7w7pekm\npQOZ8IPmJpy8HBBI3w9QvDumbeu+ggxvDLjB/DQi8Ns0bR5Vsr1icOaAH1k06lfKPV2K1/u1oHSt\nEmmUdavnrOe37/6kSdcGNGyf+kmhqirN/N7EnnjDTdZiM7MselaaqsOgLcEVg/KfGnw1YTZJV8bQ\n66V8nD5i5e0R7Xi1d1pXY0C74WWc58nmed91BtzntRDj6J5AEhgKo4T8cUt/VdsTG3IhDHeestzt\nduN2ujFbzWxfsZvBLb/2lDer2rACe9YcoH7bOtRoUoU1czcQfS2GXt93p0CpvLxdrhdnDp7HbDNT\npUF5T77GNv1fTlUB+V6R0o6MGQTJvwMgAr9DWJ66pY0bGTcWXMcQfn2RySshfjLgTvkHGCsCdlAC\nEQHjwHUKUEHGIaM/AJkIIgAl544sm/vdkK0SjdqT7KyevZ4Dmw7fVf+3BrdmRdJ8Rvz5OXvXH+TN\nIu8wZ/Biz/GEmATGdJ7M4W3HGdt1KrGRqf3d3S53KgFQtk5Jhv/5WboCALTIu0yZ8Jz72b/NyKUz\nJqSKVnMgA4QwpBEAAMJYEGGpg7A8DT5dwfIcIuBbpH09amRH1ETNpVnGDkZGdUSGN0Y6M47sAy2j\ncMfS7zOqw0SPwtRgMHj298WrFsHmY8VkMVLnlSfZu+4Qbpeb1bPWU/2FSnyxtC+tPnqJb7pMYfmU\nVXQa9gZefjaeKJyTgFA/XE43LqebqCsx/32NMolUE5FxXwNW8B+JCJ6XRgAAWoxA4mxw/I2M7gXS\njuaOLQBvwBfcJ8F1GBw7kDEDkJHtkZEdka4LoOQFDGBrnWVzfxA89tuBEW9OYMfK3SBh+KrPKfvU\n3WWdiQ6LYcGwpbidWmKMl95phF+wLyaLCZPFiKq6MZoNaZRZx3ae8hQEEYrgy1/64RPgfc+fS/i8\nQ9EKuzCZJVJVqf78Da22lHZATVfTDSDd15AJ34OxKMKm5U4QPj1S+jqQV1sADnBsQ5XxYN+SslS2\ngvMgmEpkOK9RHSYSeTmKsPMR1H2tVpr6CIGh/sw5NZGIS1EYLSb2bzxMUnwyeYvnxmIz43K6GNL6\nG1wOF8d2nmTmsfH8Eq3F6sdGxBEfpQVd3S6u4E6RCd9B4gK0uvIGhK1R+g2Fr9YGIyh+4NUR3PEg\nVIRvH2T0h+C4Hh0pQMYBKQ8A505wnwXckDQH6dsTIR6P2+vxmOVtOH/0EvZEBxYvC5dPXb1rIeDt\n74VvoA/JCcnYfKzYUur1IQQ2XxtOh4scTwRhsaUWAvZEO2arVq47d6GcWSIAQHuKBxd6g5lbxxJ2\nSVCgrPZVSed+ZGRbkG4InIiwaOHNUqqQtExbliavAOe/2vv2DRDwrWf1oWUfuh7r74K44WCqAjIC\nDPnA+txt55WnWG4SYhKQqiQ0A0WezcfGwa3b+LrjJIQQFCqfn/FbvkIIgWJQsPlYSYhJRDEIj5PQ\nuSMX2fPXPt7/rjP+OTJnNck8ZjRJff3v9BGWWhAwAuk8BcIfwp7S/re9rK0M1JiUcQxgbQmKFVyn\nQZjA9gYkp4R+SxfplnV+RHnsdQKHtx/nmy6TyV8yD31nvXtPZqeTe89wau9Zqjas4Ekccvn0VTqV\n/lBTdCmCX2JmY7vJTCilZNGoXziy4wTtv3gNi83MhPemE5IvmB7jOmK2mIiNiGPhyF/IWTCEpt2e\nz7RHn3RHIKM6gRqOCBiHMFdBjR0OiTO0BpZnUQKnaG0TF2sBRKggfEBeL4FuROT4HWEspO2LE+ZB\n/Bjgpow4psoowT8i1TjAiVAyLmySGJfEpp+3U7h8AU+KtfRombMTMWGaydFoNrIyeYHn2Kn9Z9m2\nfBdVn69A8SpFuHLmGm8Vfw+3S0UxCCbvGUWhslnnQ6Ap+KaBVBE+byOEFSmTIXkV0pAHIXzBWCiV\nk5Aa1gTcx9FMhwDOm0a0pPyLB8zgPxphKox0HoPkXxFeb4ISjIztD0puRMCIDFdt94ts5SxUqkYx\npu4dfcf91i3azIppa2ja7XnqvPIkA5qPYOtvOzHbzEw/8I2nXa6CodRoUpmtv+6kcef6qQQAaOa7\n1/reyK770XNfsPfvg5isJopWKsyLXRsw8q0J7PxzL0azEf9gX55pVStTcxSGYESOZanfsz6PTJwP\nqNrTKAWpRmnv4QJTWXDsRLvRLdoPUiYhw5uA+6rWBpMmLAyhCL8B2goj4g1ARfoNRfFKXwnp5Wvj\n+fZ1/3PuZWqVYNvyXahulXJ1SnL59FVyFQzlh88W8OOIZeQt/gRNujQANO/M62HRqlvyQe3PWRI2\nI0O9yp0ihBnh806q92T0B9o2CDsSE5hKQ9DCGwLa1hzix6GpzdSU/yWekG2SUt53QkwvJAIRNBsR\nqMWIqBGtwbkXOKKt0Lxe51HlsRcCd0NsZBwj35yA0+Fi/8bDTC6dl62/7QQJjkQHO//cy4tdtR+o\n0+HixJ7TGM1Gju488Z+++YE5AzCaNeWfX7BWOtxpd3rMkA67M8O+mUGYK0PoZsCFUG6Y9IRXW6T7\nFKixCL+B2hLVvhlMlRCKH9J5CNzheJ5oPr0RXq0Qig9Sqsi4b9H2txKSl0AGQuBmXE4t6Wh6N+vn\ni3oxb8gSFn39K/+uPcibRd+lZPWinNhzBqlKzh+9yKs5O9FtdHteercReYrl4uJxLToxOcGOPcnh\nGVdVVWLCYgkI9c+6uAjXCSA55YUj5Ya1A5qQV3zeRtoaa3oCxy6kcz8oOcC5A0yVIG4EmnORf8qq\ny6z5I1zPL2AoAM6UbE6GR7sk22NvHbgbDEYDitEAAkxmIz7+Xp4fnBCC6i/cSBQRfiGCiEtR2BPt\nHN91GnvS7RNLfji1Kx2/akPv77tT55UnAegz4x3qvVGbV/s0pV6b2vc8f6H4phIA2psWhN8QlMBJ\nCENOhBKEsDVFGPNqx43FUhR+Amyvofh0RCg+qIm/Iq+WheRFgA0wgS0dp6RbOLLjOC2C3qJ5QHv2\nb0xrmTGajFqk4/WkohKObD+BKyVbMVLLWLz4618xGAxM3TeG0AJa3IEQWmUm0ATNu9X78Xq+bgx4\nacRdXrG0CP+hoBQEkRLrYG2BEKlXeVIEIV1nkabyCO+2KN5tUALGgusQ2mpKajc7VjDkAVuTm8b/\nEuE3EBE4yaO3eVTJdiuBpIRk3nvyU+xJdko9WYz3J3Uh+Ikgvt02lG3Ld1G4fH4WDFtKjaZVebJx\nZUIL5MA/hy/hFyMp81SJVNFuSQnJrJ23kdxFclG5fjkAbN5WWvZqmuqcIXmD+XjWe/ftM0nnIWTk\nGyCTNHWUV1uEzwfgOg6mMtpyWJggaBHSfQnhPoOUydqPPmES4AI1Dnz7IbxapNq/SilxJDuw2FJH\n+a2cvsaTQuy3yatS5VK8znNvPsOhbcdYO38jzpQ6CwCKQWDzseGwO3n2dc1UN7rTJK6djdAaCMHp\n/ecoVaMYV05f48yhC7hdbrYt34Uj2ZEl7sbCXB0RuirlM7rTePhJ1zkIb8h1/wCJEek3AmFrhLC1\nRCatACS4jgB2cF/m5meqEGbwyjo/h/tJthMCR3ecIOxCBEg4vfecJyKwaMVCFKlQkBd92uJIcrB8\nymraDmjJj8OWevarR3eeTDXW8Lbj2fnnvwhFMHRFf8o/fXsvwDtFqgmap5qxCMKcsY5HJi0FeSO1\nOYmzkUnLNDu3sbjHQxAZAxHNkdIJpmKI4MVgbQgJM0AoCEuNVAIgKT6Jd6p/woWjl3j90xapqiQ/\n3bKmJ5nos63TsbmjeRf2md6DRp3q8fFzg3E5XQTmCqD7mLeo1qgSMWGx5CqkuTBvX7Hb08/b34tn\nWtUE8CQmOb3vHNUaVbwv8QbpufhK+xo8DkIAuCD2Y2RsP0TAt4icOzRT7bWn0PQEKjym6ceznRAo\nWqkQ3n5euJ0u6rR8MtWx60+96ywdvyKVP/3NmXxAU2g5kp1YvCyEnY/I8rnK6HfBkVL1JngewlQu\n3XbCUh+ZOA9tiQpgA5kSDOTaj+q8jJAXNPOgdABJmj8AoPh+iLQ10zzgbrEKHNp6jLALEUgpWTZ+\nZSohUKVBBeae+Q6kTJOCPT46gb/mbKBg2XxUfLYsZWuVZML2YYzqMAkpJUUqFsLL14aX7w2BU7RS\nYfauO4CiKPSe1g1vPy9A21ZM3DHcoxPIKqQar5lRTWXTelpKqSVn8SgFr6OZV2XC9whjfoTrNDLg\nG0icB9aXEYb7FPtwn/m/EwLbV+wmPiqBuq/VStf3/HoizxP/nmFs1ym0KdCNIhUL4u3nRcVny6Io\nCqpbRSgC1ZU6d/51k9d1+szowfge35O/VB6efjW1QMkS3BeAZBA2cF/S4gRuQToPgRqO9lW60Ozg\nFjTtNYACUa2RMgakAY8zjM+HnjGEMf2sPsWqFMbmbcXtdFP7lbSfL6MoyAHNR3Bk+wkURXhSh62Z\nv4mTe8+gqio/9J/vKawipeTfvw/w1uDXOLK9Mk8UyUWtl6qlGk9RlDSC5l6QUkVGtAA1DIQ3hKxF\nCItnPjKqMzi2gKkCePcCYjVLSlRXQIKpBjL8ZU15Ya6NEjQry+b2MPi/EgLrF21hVMdJgOT4nlN0\n+7p9uu3MVjM7/9jD2UMXUN0q4RciUAwGzhw8j8GoCYGCZfJx+dTVG31sZkLzp5b0xasUYcL2YSQn\n2om8HE1o/hwe7fWpfWc5f/QSNZtWueslrPAfgYwdrAXAWG7kOlSTVmourua6ENsf7Ql1fQXjAr9P\nIHYQkAxKCKhXSO28YgTnfqQana678XX8gnyZfXICkZejPAVHMkP4hUicdidWbwtRV7QIxwKl82Ky\nmBBAoXI3sg/98NkClo5fgVQlg3/t59Gt3Ip0HtfcdS31tICfTCClBPd5UIJS9ZFqTIp3HyCdmhC9\nHjMhY8GxGVDBeQBhyo9Iyd8gQ9eBTAbnPmSi0LwsnWnrOTxu/F8JAS35pwuX082Fm8popUfxqkUx\nmY24XW5UVavoc2rfWYJzB5KnWG7e+rI1nzcbjtmtUqtFdSo+U8aj7b+ZqGsxvF2uF4mxSTTp8hzv\njOvIqX1n6VnzU4QiqFS/HIOXfXxXn0eYK6fxE5Cu8xDTF7BD8iq0p78bj++yoRCKVwtU11lImgnm\nJ7UIuqQ5N43iAvtqZIz8z2g3q5eFJ4rkuqN5fzLvfb778AetcGqKpaVBu2cIyhVA5JVoar98o4zb\nwc1HSE6wYzQZOLH7VLpCQLrOIyNTfCKMcxHBizI1Dxk3EhLngLBAjt8Q1011iXPRagu6wVAIlJtM\neMIPTNXAuQtMpUAJvXEoZbsklWAw1wDXEYT/oExfl0eV/ysh0LTb8xzYdIS4yDi6jXnrtm2ffLEK\n32z8krioeHas2MOyCStxO91EXY1hwXnNC2/eme+IuhrNE0VyZWifPrztGPYkB067k7ULNvHOuI5c\nOHYJoQiSE+xZXz0nVW7BmwqWmp7UquGo4agJCyDxOzSb/x+IHL8h7ZtBPXXLYC6yimvnw/EJ8MbL\n10apGsUYvyVt8o7zRy8ypfdsJr0/g2+3a/UEOg1vy5DXxhAQ6q8VOUkP96WUhUyS5qabDlrotMuz\nrAdSIgYd2jbIsRtsKTe7/W88Sj+zFqYtncc1HYzwgoBJ4NwGsSM0F+3AaZo/hX0juM6CrQVK0NS7\nu1CPIFkiBIQQjYBxaOL1eynl8KwY907xCfDmq+WfZLp9scqFAShbW0spdmL3KZp2v5E05FblVXqU\nf7o0ASF+XEu00+K9xoBWRrtKg/Kc3HvWU9MvqxCGPBAwXosPSP7lxgH3GZDxgB3ihoGhMKiXASMy\nsgPclI0IJRdYntHMiLcgXSe1+HlLnVQZjDLCnmSnW6W+XDh2Cau3han7RpO7UPpbh98mr8bldGNP\ncvLek5+SGJtEm/6vMP/s5NufxFwVrC+A8x/w6Zd2zu5LyPAWWtyE3xAUr5e1A96dIW4oKIFguclL\n03Uk5Q8DWDWnMBk/FtyntfeS5kPyn5oTkDMJ7H8hlVzIqHcACfaNiKAp/3ltHhfuOXZAaPaVY0AD\n4ALwD/C6lDLDzdLDzCcQGxnH4a3HKF2rBL6BN+0TpcTpcGUq8eetqKqKPcmRxqX4fqNGvg2O9Te9\nIwArmIojAmeCcw8ydgS4jwIWsDYCQ06Ed8dUlgDpPICMGwfGQlq0nTCA+SmUwIn8F3/N3cCI9t9q\nUZQCen3fg0YdbuRccLvcTOkzm7OHLlCyRlEWjvwFk9mEKlUciQ78cviy5NqMe7oOMmEuMm4EoJlE\nlRzLbxyTDsCUaiWnRrTXBIoSosVVKD6o8VMg/lvADX4DwLEX7CtBSkTwQnCdQMZ8BiSBkkcztxry\naa7CSlYHPN07Dzp2oDpwQkp5KuXkPwIvAY+UxuTauTB+Hr+CVTPX4XK48AnwZs6piR4LghDirgQA\naNrrBy0AAJSgaaj2zRDVDXBp3muWhtqqwHUI6b6WEu6qRdEJr9fS9TeQUT005aFja8obiR4T4n+R\nt3hujEYDLqcbo8VEtUapy3Jt+GkbK75fgz3RTmxEHNP2jebTxkO5cuYaBqPCc22fZsNPW5n9xWJq\nNatKu4GvcvVMGLkL58x8ZiFLTYg3gpRpkoTeupqRzv3g3A0oYCxxQ2FoqgGMB1TN5Be0BBwNtZwM\nxkJIY1Et05PrpOYYJOO1v5P/emycgjIiK4RAHuD8Ta8vADVubSSE6AJ0Acif//a56e8HnzYZxrlD\n5z11/BzJDhJiEvELTr/AyOOCYnkKGTgB6TgAxqIQo3kmSvsqtK/XDlggaD7CnDqvoVTjkVHdNVMZ\nAu3GKA3qRe1pmAlKVi/GuC1fcf7IRZ5qUQ2LNXVshH+IVidRK9Pmzz9//EvEpUiQkL9UXrqPeYvG\nXm1wJju5fPIKm5bu4MqZaxQsk48J24d5KhbdDmEsAiEbQMZ7NPkZ4jqDR5nqWI/quohizIPAjsQI\nODXvybDaIBOQ/qOQSm6I7qGFEgeMg4jrN70DKWxkUTTDQ+OBKQallFOBqaBtBx7Uea9jT7QjJShG\nBYvNQtNuz+MT6M23737Pwc1H6Dq6PZXqpW+eetQRlmcQlme0MGMPbjxfr1AgsjOqIQgROAFh1HQh\nMmGGtixGBRGE8B+WbqJNNXYYJP8KtrYovu8QdiGC47tPUaleWWw+NopXKUKxyvmQEa8gY48jLS+B\nqRi4z1Gp7rt8Ou8DLh6/zAud63Px+GUURcHiZfb4A+TIE0TExUiEEFw6cRm3S+XU3rPEhMdlOiOz\nUHyBGwJdOnYjkxYirC8iLDdVd7Y+DzH98CgGw59F9e6pRRn69NRWCYZ8WoYhXJo3ZfIf4NiktY96\nCy3GIgqw3NbE+riQFTqBmsAgKWXDlNefAEgph2XU52HoBE7vP8vsLxZT5qkSvPLBiwgh2P3XPga2\nGElygp3AXAEsujQt0+OFXYhg/ldLyFcyDy16Nr4vVX/uFNWxFyJfB9zg/R7CXAmZ/AckLcbj+Waq\niRKsObeoVyoCKeXTzc+jBE1IM6Z0X0aG1Ud7egrijRt4s1hf3C43eYrmZvKeUVo750FkRBtuOClZ\nkTg5fTQXw9+pyIdTu1Gmlpax6OrZMGLCYylWuTBCCKKunOfaka8JyF2MsR9Es/PPvdRsVpUvlvYF\nuONrq2VPqooWJWhBhK5PpQNRE6ZD3MjrrUH4IIKXaQlYjKU0S0Dka1pyEN9PwL7uhu7FkA8RMBYZ\nN1qL0PTp+Uh897fyoHUC/wDFhBCFgItAa6BNFoybpRQqV4CBP/UBtLyBHz03mAtHL+FyuDBbTXec\n7vqr18dyeOsxzFYTuQqGpvFyeyjY16F9pUaEsbCWR89YApn0Mx4hYMx3U4ekG396aV+ZtG9FJq9A\n2F5GmCtpmnVPYIwk+vK/moY/0c6ZgzftAo1FtNLd7ovalsJ1FKlKYsPiOHvoAt90mcz3KXkachYI\nSXW9/S3D8Sv5N87kVfjY8lKjST2+WNqXpd+uZGqfWRQsm59v1vfFYjoEjh0gDAif7hmnV5M3+/yn\nfcgp3p1QrU0hvJkWc2GujQx/EU1oCKTPh4iQjSATEIZcqNYmENlBu14BUxCmAoigmf/xZTw+3LMQ\nkFK6hBDvAn+imQhnSCkzp1V6SGz5dSfnDl/EnmgnR54g3vispSdg5bHGdQTth2xAuk5oe1UlGBE0\nG5kwR7MaeHe+0V5YU3ILmhCGQKQajYzqAtiRSUuQfl8hbM1Tbu7zgJW8RZJ5uuWT/LNyD28MaKnF\nI9jXazn5AsZr+2ZTVUiaRczF/YzpfRGLl5n8pfJmPG+ZBFJFlSoNWkUQdW0ZibFtmTfkJ9wulStn\nLkFkc7BEo+VDEMjkTcjg2Si3eA+qceMhYSIY8oOpPML20g0nH+mGpJ8BJ8L2KoSsAfUKUk3UPDC1\nVmBfg/DpxvXthWIIgJCl9/z1PKpkiU5ASrkCWJEVYz0IilcprBnTvC1Ub1zJk0DkTui/4APPdqBm\ns0ytuu47wrcP0n1BS4RhbYB67RnNJdZ/LErg2LTtAyYh4yeA5VmEqRRSjeTGk9MFsQNBmBF+XyJj\nPk1JXNqQvjNvWELUuDGQOCslrx6AAREwBuHdkeDi8OnCY1w+eZU6r6TRFd+Yh/9QZMxwTu/ZQbkn\nIzAawaCOpFqjimz6eQd+gSpmcyQ3ovokuA9AWF1k6ObUDkKJM7TjahjC1hJhuSHcZeJsiPtGO+66\nrMUG2FeC7XWwNk5xLlIQPpkL+5bSlSaZqJbafCC4zyP8v0AYi2ZqrIfJY59j8G65di6Ma+fCKV2r\nRKY00I8bMmG25jaLA4ylUW5xP063j2MHMnEx2DemZMuxgK0Vwqs1wpS2opKasAjiBpA60g6wtUG5\nQ3daKSXuyJ4Ix2otrNn6Ilib4458D5RgDNYqKXZ7K3A9f6IBEbwMcVN2ZDX6Q0hegycC0FwREfg9\nuI5o+RWTfwMkWBqlPP21bEIi5+47yg6sRveD5J/BXAsRON0TjiwTF2nFTUkGUyWU4IV3dB2yimxV\nd+BuiI9OIDBXAGVrl/q/FACA5mWHAbCAuRoy+U8tz6Aaj0xehXRfTtVc88/vnHKTGMH8jOZ3kLRY\n0/o7UgttqcZD3Od4BIDIBfhrDjjebfkv1MQfUa9WRI1oq8Xl29ehONcjhKplRfIbAAljMShxGLgI\nxie0tGnBszR/fwBjKUixdFxH+I9G5PhZ81wiJdgndgwyoq1m4UBo/Xy639RJgTsw9KnOo5oAAC3U\n232Ta7jheqyBJU3h2EeV/6vYgcywZOxypn08Fx9/L77bPUpLgZXCqX1nsXiZyVP00fzypHRoIa6G\nIohUCr60CFNpCPkL6ToG0T2QiQs012HhB2q09sMPWXMjTZknKYkKJGmOSBGvauXNMGvRcjc7GqlR\nqU8YOAHFXD7zHyZudIpT0oEUZZ/A46tgyKNp6M1PgfMoICFhPlImakrBkL+R7ihInKl9Lq92Hg29\nEAoYiyJNVbVxMYB6iRv5BN2a7kQEaTesO0zLqJTJ2oFq/HcQP0mbJwZNX3JT1SZhqav5EqiXwPZy\n5q/HQyTbCYFfJ/6B2+kmOdHOrtX7PC6uv0xcybS+cwH4YllfqjSo8DCnmS4yqrsW3Qb8r71zD5Ks\nru7459x+T/cMMzuzC4okaoUgKA8BCYgPhE1cHi6CpUCpgVqyVEQFRUUtgomoJRUTo4BKCCoBH6so\nCIKyC0qBZZAFeQUWUV4xa4Cd2ce8p3u678kf53b3zG7PY3dmp6f3nk/VVu2dvo/TXd3n3t95fA/d\nP53ZESSWQvmZaCx3yQRFdCg6WRYqL0bRf5DUa9D2j8LY3ZBdgY5vQNovtoEbwTLInTL53Mn90MSB\nUNkA5JHkThaApY+wCjwC0z8M9ob2T0H5D0jB+i2kcAFkjkOlAJtPASqgGRv82f9xay0GdPArqITQ\n/mmCtjPs2K6vm2hI4lUQbkXHH4HwJbseZeg7AVsKhDByI7TNcmrQ2M+i49KQPxcpnL9DVeJUQ00X\nK0x2gIUAABDvSURBVHvos/DUnLR6Ocl0knQ2zeEn1Cvo1v/sYYqjJUrFcR69Z5EmN8Yft7unVtDh\nq3d4pG9I+kiYWCxDxlRzc6eYTsEEJHsypI+BwcvRzWeilV6T0A570c3vrV1PwyGb0lvtyaeMlv57\np96KdF6FdP0H0nMHkrAuzSB/FsFen0ES1rosIkj6UHMw6TcDeci9B4avjsQ+q4NUhuxzGbjMxoEB\nIikk/QYk0YOk9idYdi/Sc4e9f6AuGY6pL22bZbt3/gPYhKIupO2syUHJFiWWgcGtm/ppa89OEs98\n4r+e4tKVl5MrZPnSL/5xp3voF4Jw9FYY+HwkHRZA0EOw7N4Zj4OoZr74K8i+vaGSkJYeQLeswlJw\nIaZK/D77oZfutevlz0fa3mM5dS1GctubbN/2zxDk3zt/b3aibcM3REHOsk1gDjdNvXM0SGWHc+g4\nWv4T9H8Syo+wY/1AYE4i7EWTr0Uka0uLRvaofT6LsUioSqyGj+wKjUpRX/vGA7ip79tNsGb2BLmV\naOogk7ZizB5zZ5iDUEVSBzeUJ6uixXuo6xNkom7Dv0XH1kLpAUCR9CHo2F1216UcOYCI8YdQPcMm\n/YRbkMIH56WkVrU8+eca9k2xZxRTkLQ9sWgZlU5MGmwpbD41enIJqVYJkn6LzRsIX4L0X6F9K7E0\n5Lj1C/T8pBYz0XALOvBFkDzS8ckFnyi0O4mlE2hlJPkXaOHDUFyH5M+fl7uRhiMWMacdKCFd19Tz\n6/nVkD4CrbxoMYThb9JQjGRsHZrYz2rtKaNhL9K5Y21Cw+uX1lu8Q9qRJd+pzUrQ4v2m9ydJyL0L\nEFuT61b7f9AT3dBT0PZuK1QKN6K9x9vrNTs7sMBgdTuAYBlB11dQLUO4BR1bF01tihqgtN9iFtkT\nbXPg8lodgSb2iYqJ9gzcCbQgQWE1FFbPy7lUx9G+k+xuGHRD931Ioh7oEhHCcBv0X4wi1GsCBGtR\nro7vDqKMgVZPPHsbhr5mLc86iA5fjez1efv7yPV2fi2CJAk6/gFtvwgt3Q+DX7dZgZJHlt6GBF3W\n6FT85QQbqwxAsB+EG01FOH0EEo0FE0laliB3Mjp6I5SfxZ4G0pHicPXtFuw9IiZOugfhTiDuhJsj\nBSK1tXbpHsjVKyi1/DRsu5D6QM68TTFOvwmCDJSetDV26jBrtkksg8oWpP1Ds7chdURdy2D0h4Sl\nDUj3tZA9xUqSESQSWpWgHckuJ9x2EeaAEjZkJX0U9uOdODtwgjMoXITkjp/yMV6CLqTHlJq08n8g\nnUjQVn+94xNoYpk5nbZF1xozJ9wJxJ1gbyxiXs2jbzcrsfKnyduShvGH7c44/tvoLp2zsVuShu0G\nf86K3Okw/A1qZcGV38HorQT5c9D064Ekkuip7a46bk6odBfIn1v5LyCFj6AoaBIyb4Ntq7EBrYcj\nudl3ekqD2YEiuT1qCTCR2KUIncmIRGtrAJIQDk3eIX2szT0AIIjqDEpQujv6/6hlK3SUqVAtopXe\nqY0Y+hesuhFsFHjSpgSDpQ8nOADAMgWlX9lG+FQ0TBUkKBB0XEqw16eR8I/YkqUCOrioI/nNxp2A\nExUCZaxZKDM5qySSjO7uafuXeAWWPnyPiXAE+9ogE5ms0KSqaPk5wvFn0E1vQXuPIxz8auPrlx7F\n5iakIX820n0jkj5qanvLf6SeyQhhtEF9fvYkSB8KwcuRjksn2FW22Y3hyLQfSZzw5YCDFD4KuZXR\nkI4lO7we5M9BM8shKES1AaO19bLmV6GD/4q+dCCa3B9Z8gMkyEea/9+pXgEYh5E1hFpEssfXtA51\n9LYo7ScQvAzG1lsTTuYkq72XJJI/u1aVp6UH7MlD9gXtBco2W2H79xQUkCU37PB33Xy6Bf+Cbuj5\n+aR1f1xxJ+DYo/KEllcNt1q6bkJXXW3EOaDhAOHoL6H4GJTWRoFFoPw/aGm9lc2O3UG1Qw9JWexA\nN8PItejIDRCp/Wj5GWpjviVrLcKEMLaGajRey88gnSadplvPi/ocMlYSXHkGivdYmXNq+oGw4fD3\n63LjYV80neiAaY+JA74ccCYRDnwR3fRGtHc5Gg7u8LqOb0B7/wb6L4Kx6+oOAICiTfwByJ+HNQN1\nQ3c0xrtGpaY/IPn3WyoueSDkV1Hv5qumIyswdouNCrcDqH1ttR8oW/NROIuBsOUJAtjSgQ59jXDo\nGzSjanYx4U8CzmRGb8R+pNusmi7zpsmvlx5i8sju7YhajqXtnWjuZCSKFejElF3+fKi8QDjwBcgc\nR9D93drhYWJfGP53Gw02ZipAkKo1PsmS76GjNyHpo0GyNm8gdZgFMCeglU3o8LXWnJRdiVBE8qut\nkUgjO4prLSWa/EvInkBccSfgTCb3ThhZYy3HqXprsGqISGD6+0FXdOeNSnWTB0d32SLkV6Ol36Jb\nzrEDu65GMseiXd+DoSsgeyJB/gzCl95gd/Li3Wj6kFo/Q5A5CjIWFNTiyejQlZA5rvaoL8k/Q9rr\nk5Ok+/sN34Zuu9C6CEnC4BdRHYP2TxL0/BSAcPOZUAnsAUUWfmbEYsKdQAzQ0sNWlhsUkCX/aaPM\npiDo+AyaPx+CvRCxYSzhwOdg5AY0eUCk2x9A4cMEhfMnXyfqYwj7L6UavdfRHyGZYwkyh0PmuvrO\nkoxWCCHVr2E4cpMN+cyvstRg5mgks3Mj322M2rMQVrsEQ4tHULZAZd4mVUvnlejwtyG5vwmyTnW+\n4q+tHyJ7Yq1NeU/DYwIxQIeuMrmwykZ05KYZ95dET80BqIb1dX75D9jj+Wgk2LHdcVVhj9w7sAKk\nNDKVsEbhY1htQAiV59Hib2DgszByvU1E2gW0/DTadxra/3ETPs2uhLZzojqHFOTqP2JJLCXouJig\n7bSpz6chuvXvTchl4PP1uMQehj8JxIHMsVEnIEj68Bl23g6dGBwMIXglMAKJVxL2nQr5DxDkVkw6\nRNJHwbL7AI2GgjRg/BGqsQUdvQWpjQ9TdqhanC3l50wxSUeg8jxB9/V2xvYLQIcbpj+nR0DaTIwF\nYA/QDmiEO4EYEORXoek3gLQ11BKYFsli3YVjQBKyb4f04bDtAqAI/RcRltYjmTdPUtSR7aTAATTs\nByqmIZh7Fzp6K6BI7gyr/W+/AMY3zFrtdwcyb7WZguUN0PFPdVsks0s/YBGB7jXo6E+RzDFIovG0\n5VYnlqIizmQ03IYO/htIAWm/AJEMYaUPyk8iqUMg7LdW26GvYHfpNpAQtILl+EMgg/TcCpJDN58F\nuhXpvLI2AqwuWqJI51eR7AkmMIr9SFVL6LZPmLzYXpftMDhVw2gAaOrAeuGQVmypU/kj0n7RtLGO\nuOGiIs5OoYOXw+itQIAGnaj0wKDJbaksge4fRd1849jjegm61iDjD6ODVwADgFjuv3h7pOVXRocm\nOIHRavEQ6OhPkOwJk6W5xtZFE5RGbQR4zy1Qut/Sd9KO9q2wpUnyQKSqHDT280jfoIRWXkC6v7f7\nP6w9EHcCDvY1qCrzpGDkuvpL2g+DX4bx6Mkt2BvpuAxJHwzpgyF9GDp0LWTeiqT2R3WY6ig0MsfX\nz5N6PYyuAQRpJOqZ2A9zMDlIvhrdci6UHwcC6LwKwgFMQvyhWrrSHvGrdu85Sj8LjTsBB2n/FBos\niXrl34uShsHPAgqZt0DqNVD8hW23nT157Z86BOm6or6dPgzt/jGMP2TCpYBWXoLBSzBFn30apuQk\nfSgsuR4qz5va8aZjIhmzHIQjVrMw/ltoO6eu/ZdZDh2X2HIgv2q3fT57Oh4TcBqilT7TCQjyliYc\nux0QyJ40pQBnOPA5GL2FWn4+6EZ61kL59+jmM6lOCQ72mVmZOBz5gc0mSL4Gyo9Z/KFwIUHh72Y8\n1tm5mIDXCTgNkUQPEpiMlkiA5N6B5E6ZWoG38pJVGuqAlfjqCFResO3kgdD2Pki8Gvb654bHb0/Q\ndgbB3uuR7PKoz6AYTRBy5ht3As78EHRB0Gl5dckDWcidYelAESvMWXoHQe7EnTtvdjkE7UDSRE+d\necdjAs4uoZUX0ZEf2XCQzJstbddzmzUdpQ5Hgo55uY4kXg5Lfw1UalWMzvziTsDZJXTLKqg8hw6n\noPtGJHWAafRnjpv3a9kSxB9adxf+yTq7hg5iZb9Sa/N1WhN3As4uIZ1XmeJv4QOT9fmdlsOXA84u\nIelDkSXfarYZzjwwpycBEXm3iDwhIqGIzCon6TjO4mKuy4HHgdOB2Y3GdRxn0TGn5YCqPgn4YAfH\naWEWLDAoIueJyIMi8mBv7zTTaBzHWVBmfBIQkbuAfRq8dImq3jLbC6nqNcA1YL0Ds7bQcZzdyoxO\nQFWXL4QhTnzRcBDCXki8ypeWTcDrBJymopUX0d63oX2nogOXNducWDLXFOFpIrIROAa4XUTWzo9Z\nTmwYf7TeJVhc12xrYslcswM3AzfPky1OHEkfA4mlNhfQuwSbglcMOk1Fgg7oWYd1CfrXsRn4p+40\nHQsG+lexWXhg0HFijjsBx4k57gQcJ+a4E3CcmONOwHFijjsBx4k57gQcJ+a4E3CcmONOwHFijjsB\nx4k57gQcJ+a4E3CcmONOwHFijjsBx4k57gQcJ+a4E3CcmONOwHFijjsBx4k57gQcJ+a4E3CcmONO\nwHFijjsBx4k57gQcJ+a4E3CcmONOwHFijjsBx4k57gQcJ+a4E3CcmONOwHFijjsBx4k57gQcJ+a4\nE3CcmONOwHFizpycgIh8SUR+JyKPicjNItI5X4Y5jrMwzPVJ4E7gdap6CPB74NNzN8lxnIVkTk5A\nVdepajna/A3wirmb5DjOQpKcx3OtAn4w1Ysich5wXrRZFJHH5/Hau5MeoK/ZRuwErWRvK9kKrWXv\nAbPdUVR1+h1E7gL2afDSJap6S7TPJcCRwOk60wlt/wdV9cjZGtlMWslWaC17W8lWaC17d8bWGZ8E\nVHX5DBc7BzgFOGE2DsBxnMXFnJYDIrICuBh4q6qOzI9JjuMsJHPNDlwFtAN3isgjInL1LI+7Zo7X\nXUhayVZoLXtbyVZoLXtnbeuMMQHHcfZsvGLQcWKOOwHHiTlNcwKtVHIsIu8WkSdEJBSRRZkiEpEV\nIvKUiDwtIp9qtj3TISLfEpFNrVArIiL7icjdIrIh+g5c2GybpkNEsiKyXkQejez97EzHNPNJoJVK\njh8HTgfubbYhjRCRBPA14ETgIOAsETmouVZNy3XAimYbMUvKwMdU9SDgaOCDi/yzLQLHq+qhwGHA\nChE5eroDmuYEWqnkWFWfVNWnmm3HNBwFPK2qz6pqCVgDnNpkm6ZEVe8FtjTbjtmgqi+o6kPR/weB\nJ4F9m2vV1KgxFG2mon/TRv8XS0xgFfDzZhvRwuwL/O+E7Y0s4i9qqyIirwReD9zfXEumR0QSIvII\nsAm4U1WntXc+ewcaGTPbkuMy8N3dactMzMZWJ76ISAH4MfARVR1otj3ToaoV4LAoznaziLxOVaeM\nv+xWJ9BKJccz2brI+ROw34TtV0R/c+YBEUlhDuC7qnpTs+2ZLaq6TUTuxuIvUzqBZmYHqiXHK73k\neM48AOwvIq8SkTRwJnBrk23aIxARAb4JPKmqX262PTMhIkurmTYRyQF/DfxuumOaGRPY1ZLjBUdE\nThORjcAxwO0isrbZNk0kCrB+CFiLBa5+qKpPNNeqqRGR7wP3AQeIyEYRObfZNk3DscD7geOj7+kj\nInJSs42ahpcBd4vIY9jN4U5VvW26A7xs2HFizmLJDjiO0yTcCThOzHEn4Dgxx52A48QcdwKOE3Pc\nCThOzHEn4Dgx5/8B3xbtWzsDJiYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x104b68cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_train, y_train = make_moons(n_samples=500, noise=0.2)\n",
    "y_train = y_train[:, None]\n",
    "plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, s=5)\n",
    "plt.xlim(-2, 3)\n",
    "plt.ylim(-2, 3)\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class NeuralNetwork(bn.Network):\n",
    "    \n",
    "    def __init__(self, n_input, n_hidden, n_output=1):\n",
    "        super().__init__(\n",
    "            w1=np.random.randn(n_input, n_hidden),\n",
    "            b1=np.zeros(n_hidden),\n",
    "            w2=np.random.randn(n_hidden, n_hidden),\n",
    "            b2=np.zeros(n_hidden),\n",
    "            w3=np.random.randn(n_hidden, n_output),\n",
    "            b3=np.zeros(n_output)\n",
    "        )\n",
    "\n",
    "    def __call__(self, x, y=None):\n",
    "        h = bn.tanh(x @ self.w1 + self.b1)\n",
    "        h = bn.tanh(h @ self.w2 + self.b2)\n",
    "        self.py = bn.random.Bernoulli(logit=h @ self.w3 + self.b3, data=y)\n",
    "        return self.py.mu.value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "model = NeuralNetwork(2, 5, 1)\n",
    "optimizer = bn.optimizer.Adam(model, 0.1)\n",
    "optimizer.set_decay(0.9, 100)\n",
    "\n",
    "for i in range(2000):\n",
    "    model.clear()\n",
    "    model(x_train, y_train)\n",
    "    log_likelihood = model.log_pdf()\n",
    "    log_likelihood.backward()\n",
    "    optimizer.update()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10bbf4b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_grid = np.mgrid[-2:3:100j, -2:3:100j]\n",
    "x1, x2 = x_grid[0], x_grid[1]\n",
    "x_grid = x_grid.reshape(2, -1).T\n",
    "\n",
    "y_grid = model(x_grid).reshape(100, 100)\n",
    "\n",
    "plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train)\n",
    "plt.contourf(x1, x2, y_grid, np.linspace(0, 1, 11), alpha=0.2)\n",
    "plt.colorbar()\n",
    "plt.xlim(-2, 3)\n",
    "plt.ylim(-2, 3)\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class BayesianNetwork(bn.Network):\n",
    "    \n",
    "    def __init__(self, n_input, n_hidden, n_output=1):\n",
    "        super().__init__(\n",
    "            w1_mu=np.zeros((n_input, n_hidden)),\n",
    "            w1_s=np.zeros((n_input, n_hidden)),\n",
    "            b1_mu=np.zeros(n_hidden),\n",
    "            b1_s=np.zeros(n_hidden),\n",
    "            w2_mu=np.zeros((n_hidden, n_hidden)),\n",
    "            w2_s=np.zeros((n_hidden, n_hidden)),\n",
    "            b2_mu=np.zeros(n_hidden),\n",
    "            b2_s=np.zeros(n_hidden),\n",
    "            w3_mu=np.zeros((n_hidden, n_output)),\n",
    "            w3_s=np.zeros((n_hidden, n_output)),\n",
    "            b3_mu=np.zeros(n_output),\n",
    "            b3_s=np.zeros(n_output)\n",
    "        )\n",
    "\n",
    "    def __call__(self, x, y=None):\n",
    "        self.qw1 = bn.random.Gaussian(\n",
    "            self.w1_mu, bn.softplus(self.w1_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        self.qb1 = bn.random.Gaussian(\n",
    "            self.b1_mu, bn.softplus(self.b1_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        self.qw2 = bn.random.Gaussian(\n",
    "            self.w2_mu, bn.softplus(self.w2_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        self.qb2 = bn.random.Gaussian(\n",
    "            self.b2_mu, bn.softplus(self.b2_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        self.qw3 = bn.random.Gaussian(\n",
    "            self.w3_mu, bn.softplus(self.w3_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        self.qb3 = bn.random.Gaussian(\n",
    "            self.b3_mu, bn.softplus(self.b3_s),\n",
    "            p=bn.random.Gaussian(0, 1)\n",
    "        )\n",
    "        h = bn.tanh(x @ self.qw1.draw() + self.qb1.draw())\n",
    "        h = bn.tanh(h @ self.qw2.draw() + self.qb2.draw())\n",
    "        self.py = bn.random.Bernoulli(logit=h @ self.qw3.draw() + self.qb3.draw(), data=y)\n",
    "        return self.py.mu.value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "model = BayesianNetwork(2, 5, 1)\n",
    "optimizer = bn.optimizer.Adam(model, 0.1)\n",
    "optimizer.set_decay(0.9, 100)\n",
    "\n",
    "for i in range(2000):\n",
    "    model.clear()\n",
    "    model(x_train, y_train)\n",
    "    elbo = model.elbo()\n",
    "    elbo.backward()\n",
    "    optimizer.update()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nsu3MZfXRAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10bce6a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_grid = np.mgrid[-2:3:100j, -2:3:100j]\n",
    "x1, x2 = x_grid[0], x_grid[1]\n",
    "x_grid = x_grid.reshape(2, -1).T\n",
    "\n",
    "y_grid = np.mean([model(x_grid).reshape(100, 100) for _ in range(100)], axis=0)\n",
    "\n",
    "plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, s=5)\n",
    "plt.contourf(x1, x2, y_grid, np.linspace(0, 1, 11), alpha=0.2)\n",
    "plt.colorbar()\n",
    "plt.xlim(-2, 3)\n",
    "plt.ylim(-2, 3)\n",
    "plt.gca().set_aspect('equal', adjustable='box')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
